package part18_解释器模式_四则运算问题;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

/**
 * @ClassName: Client
 * @Author: AllenSun
 * @Date: 2020/3/9 20:47
 */
public class Client {
    public static void main(String[] args) throws IOException {
        String expStr=getExpStr();
        HashMap<String,Integer> var=getValue(expStr);
        Calculator calculator=new Calculator(expStr);
        System.out.println("运算结果是："+expStr+"="+calculator.run(var));

    }

    //获得表达式
    public static String getExpStr() throws IOException{
        System.out.println("请输入表达式：");
        return (new BufferedReader(new InputStreamReader(System.in))).readLine();
    }

    //获得值映射
    public static HashMap<String,Integer> getValue(String expStr) throws IOException{
        HashMap<String,Integer> map=new HashMap<>();
        for (char ch : expStr.toCharArray()) {
            if(ch!='+'&&ch!='-'){
                if(!map.containsKey(String.valueOf(ch))){
                    System.out.println("请输入"+String.valueOf(ch)+"的值：");
                    String in=(new BufferedReader(new InputStreamReader(System.in))).readLine();
                    map.put(String.valueOf(ch),Integer.valueOf(in));
                }
            }
        }
        return map;
    }
}
